package models

import "gorm.io/gorm"

// chatGroup 对应数据库表 chat_group
/*
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '群组名称',
  `admin_id` int DEFAULT NULL COMMENT '管理员id',
  `manage_id` int DEFAULT '0' COMMENT '管理者id',
  `user_id` int DEFAULT '0' COMMENT '首次创建的用户id',
  `is_top` int(1) DEFAULT '0' COMMENT '是否置顶 0不置顶 1置顶',
*/
type ChatGroup struct {
	gorm.Model
	ID        uint   `gorm:"primaryKey;autoIncrement;comment:主键，自增ID"`
	Name      string `gorm:"comment:群组名称"`
	AdminID   uint   `gorm:"default:0;comment:管理员id"`
	ManageID  uint   `gorm:"default:0;comment:管理者id"`
	UserID    uint   `gorm:"default:0;comment:首次创建的用户id"`
	IsTop     uint8  `gorm:"default:0;comment:是否置顶 0不置顶 1置顶"`
	CreatedAt int64  `gorm:"autoCreateTime;comment:创建时间戳"` // 修改为 int64 类型
	UpdatedAt int64  `gorm:"autoUpdateTime;comment:更新时间戳"` // 修改为 int64 类型
}
type ChatGroupCreate struct {
	Name     string `json:"name"`
	AdminID  uint   `json:"admin_id"`
	ManageID uint   `json:"manage_id"`
	UserID   uint   `json:"user_id"`
}

type ChatGroupUpdate struct {
	ID       uint   `json:"id"`
	Name     string `json:"name"`
	AdminID  uint   `json:"admin_id"`
	ManageID uint   `json:"manage_id"`
	IsTop    uint8  `json:"is_top"`
	UserID   uint   `json:"user_id"`
}

type ChatGroupList struct {
	ID           uint            `json:"id"`
	AdminID      uint            `json:"admin_id"`
	ManageID     uint            `json:"manage_id"`
	UserID       uint            `json:"user_id"`
	HeadImg      string          `json:"head_img"`
	Username     string          `json:"username"`
	Email        string          `json:"email"`
	Phone        string          `json:"phone"`
	UnRead       uint            `json:"un_read"`
	Online       uint            `json:"online"`
	IsTop        uint8           `json:"is_top"`
	UpdatedAt    int64           `json:"updated_at"`
	UpdatedAtStr string          `json:"updated_at_str"`
	LastMsg      ChatHistoryList `json:"last_msg"`
}

// TableName 设置表名为 chat_group
func (ChatGroup) TableName() string {
	return "chat_group"
}
